from typing import OrderedDict, Union

from catalog.models.base_stac_item import BaseSTACItem
from catalog.models.base_stac_item_ondemand import BaseSTACItemOnDemand
from catalog.models.cop_dem import COPDEM30Scene
from catalog.models.sentinel2_l2a import Sentinel2L2AScene
from catalog.models.sentinel2_l3b import Sentinel2L3BScene
from catalog.models.sentinel2_l3b_sr import Sentinel2L3BSRScene
from catalog.models.sentinel2_l3a import Sentinel2L3AScene
from catalog.models.sentinel1_grd import Sentinel1GRDScene
from catalog.models.landsat8_l2 import Landsat8L2Scene
from catalog.models.io_lulc import IOLULCScene
from catalog.models.nasa_dem import NASADEMScene
from catalog.models.cfsv2 import CFSV2Scene
from catalog.models.us_cdl import USCDLScene
from catalog.models.naip import NAIPScene

KNOWN_MODELS: OrderedDict[
    str, Union[BaseSTACItem, BaseSTACItemOnDemand]
] = OrderedDict()
for item in [
    Sentinel2L3BSRScene,
    Sentinel2L3BScene,
    Sentinel2L3AScene,
    Sentinel2L2AScene,
    Sentinel1GRDScene,
    IOLULCScene,
    Landsat8L2Scene,
    NASADEMScene,
    CFSV2Scene,
    COPDEM30Scene,
    USCDLScene,
    NAIPScene,
]:
    # TODO more to add
    # WorldCoverScene
    # NAIPScene
    # MOD43A4Scene
    # Sentinel5PL2Scene
    # MCD09Scene
    # MCD12Q1Scene
    KNOWN_MODELS[item.collection_id] = item
